package gui.dados.cliente;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.plaf.basic.BasicInternalFrameTitlePane.CloseAction;

import negocio.cliente.Validar;

public class TelaAlterarCliente extends JFrame {

	private JTextField txtNome, txtTelefoneFixo, txtTelefoneCelular, txtRua,
			txtNumero, txtBairro, txtCidade;
	private JButton btAlterar;
	private String telefoneFixo;

	public TelaAlterarCliente(String titulo, int largura, int altura) {
		super(titulo);
		this.setBounds(0, 0, largura, altura);
		setResizable(false);
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		this.configurarTela();
		setVisible(true);
	}

	private void configurarTela() {

		txtNome = new JTextField(2);
		txtTelefoneFixo = new JTextField(2);
		txtTelefoneCelular = new JTextField(2);
		txtRua = new JTextField(2);
		txtNumero = new JTextField(2);
		txtBairro = new JTextField(2);
		txtCidade = new JTextField(2);

		btAlterar = new JButton("Alterar");

		BorderLayout bl = new BorderLayout();
		setLayout(bl);

		JPanel painelSuperior = new JPanel();
		JPanel painelCentro = new JPanel();
		JPanel painelInferior = new JPanel();

		painelSuperior.setBackground(Color.red);
		painelCentro.setBackground(Color.white);
		painelInferior.setBackground(Color.red);

		add(painelSuperior, BorderLayout.NORTH);
		add(painelCentro, BorderLayout.CENTER);
		add(painelInferior, BorderLayout.SOUTH);

		painelSuperior.add(btAlterar);

		painelCentro.setLayout(new GridLayout(7, 2));
		painelCentro.add(new JLabel("Novo nome: "));
		painelCentro.add(txtNome);
		painelCentro.add(new JLabel("Novo telefone fixo: "));
		painelCentro.add(txtTelefoneFixo);
		painelCentro.add(new JLabel("Novo telefone celular: "));
		painelCentro.add(txtTelefoneCelular);
		painelCentro.add(new JLabel("Nova Rua: "));
		painelCentro.add(txtRua);
		painelCentro.add(new JLabel("Novo n�mero: "));
		painelCentro.add(txtNumero);
		painelCentro.add(new JLabel("Novo bairro: "));
		painelCentro.add(txtBairro);
		painelCentro.add(new JLabel("Nova cidade: "));
		painelCentro.add(txtCidade);

		painelInferior.add(new JLabel("CopyRigth UFRPE BSI 2� per�odo 2013"));

		telefoneFixo = TelaCliente.txtTelefoneFixo.getText();

		try {

			txtNome.setText(TelaCadastrarCliente.cdc.recuperarCliente(telefoneFixo)
					.getNome());
			txtTelefoneFixo.setText(TelaCadastrarCliente.cdc.recuperarCliente(
					telefoneFixo).getTelefoneFixo());
			txtTelefoneCelular.setText(TelaCadastrarCliente.cdc
					.recuperarCliente(telefoneFixo).getTelefoneCelular());
			txtRua.setText(TelaCadastrarCliente.cdc.recuperarCliente(telefoneFixo)
					.getRua());
			txtBairro.setText(TelaCadastrarCliente.cdc.recuperarCliente(telefoneFixo)
					.getBairro());
			txtCidade.setText(TelaCadastrarCliente.cdc.recuperarCliente(telefoneFixo)
					.getCidade());
			txtNumero.setText(TelaCadastrarCliente.cdc.recuperarCliente(telefoneFixo)
					.getNumero());

		} catch (Exception e) {
			JOptionPane
					.showMessageDialog(null,
							"A chave foi digitada errada ou o cliente que voc� quer modificar n�o existe");
		}

		btAlterar.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				Validar validar = new Validar();
				String newNome = txtNome.getText();
				String newTelefoneFixo = txtTelefoneFixo.getText();
				String newTelefoneCelular = txtTelefoneCelular.getText();
				String newRua = txtRua.getText();
				String newNumero = txtNumero.getText();
				String newBairro = txtBairro.getText();
				String newCidade = txtCidade.getText();
				try {
					if (!(validar.validarTelefone(newTelefoneFixo))) {
						JOptionPane
								.showMessageDialog(
										null,
										"O telefone fixo n�o existe ou tem caract�res inv�lidos. Portanto permanecer� como estava.");
						dispose();
					} else {
						TelaCadastrarCliente.cdc.recuperarCliente(telefoneFixo)
								.setNome(newNome);

						TelaCadastrarCliente.cdc.recuperarCliente(telefoneFixo)
								
								.setTelefoneCelular(newTelefoneCelular);

						TelaCadastrarCliente.cdc.recuperarCliente(telefoneFixo)
								.setRua(newRua);

						TelaCadastrarCliente.cdc.recuperarCliente(telefoneFixo)
								.setNumero(newNumero);

						TelaCadastrarCliente.cdc.recuperarCliente(telefoneFixo)
								.setBairro(newBairro);

						TelaCadastrarCliente.cdc.recuperarCliente(telefoneFixo)
								.setCidade(newCidade);
						
						if ((TelaCadastrarCliente.cdc.existeCliente(newTelefoneFixo) && newTelefoneFixo
								.equals(telefoneFixo))
								|| !(TelaCadastrarCliente.cdc
										.existeCliente(newTelefoneFixo))) {
							TelaCadastrarCliente.cdc.recuperarCliente(telefoneFixo)
									.setTelefoneFixo(newTelefoneFixo);
							JOptionPane.showMessageDialog(null,
									"Cliente alterado com sucesso: ");
							dispose();
						} else {
							JOptionPane
									.showMessageDialog(
											null,
											"O telefone para o qual voc� deseja alterar j� est� cadastrado com outro cliente. Portanto ele permanecer� como estava.");
							dispose();
						}
					}
				} catch (Exception e) {
					JOptionPane
							.showMessageDialog(null,
									"O cliente a ser alterado n�o  existe ou n�o foi especificado.");
					dispose();
				}

			}
		});

	}
}
